#include<iostream>

using namespace std;

const int N=100010;

int e[N],ne[N]={-1},ans[N],head,idx;

void init(){
	head=0;
	e[0]=1;
	ne[0]=-1;
	idx=1;
}

void add(int x,int y){
	e[idx]=y;
	ne[idx]=ne[x];
	ne[x]=idx;
	idx++;
} 

int check(int x){
	if(ne[x]!=-1){
		return e[ne[x]];
	}else{
		return 0;
	}
}

void remove(int x){
	if(ne[x]!=-1){
		ne[x]=ne[ne[x]];
	}
}

int main(){
	int q=0,j=0;
	int x,y,a,k;
	cin>>q;
	init();
	while(q--){
		cin>>a;
		if(a==1){
			cin>>x>>y;
			add(x,y);
		}
		else if(a==2){
			cin>>x;
			ans[j++]=check(x);
		}else if(a==3){
			cin>>x;
			remove(x);
		}
	}
	for(int i=0;i<j;i++){
		cout<<ans[i]<<endl;
	}
	return 0;
}
